1. Field of the Invention
The present invention relates to the field of interfacing peripheral devices with a host computer system. In particular, this invention installs and/or upgrades an optional peripheral device on a host computer system automatically without retrofitting the built-in firmware on the host computer.
2. Art Background
In the past, designers and manufacturers of multiple board computer systems and option boards required mutual knowledge of the existence and capabilities of these option boards so that the host computer's central processing unit (CPU) programmable read only memory (PROM) could recognize and install the option boards properly. Option boards refer generally to user-installable or plug-in peripheral devices which enhance the capabilities of or add new functionality to the host computer. The host computer's CPU PROM initializes and tests the computer system when it is turned on. Some examples of popular option boards are accelerated or high resolution video boards, modems and other communication devices.
The introduction of new option boards after the release of a CPU PROM requires the designers to modify the CPU PROM whenever users wish to install an option board on a host computer system. Sometimes, the cost of retrofitting the original CPU PROM outweighs the benefits of adding a new option board. The cost of retrofitting CPU PROMS is even higher for third-party designers or manufacturers who sell their own versions of option boards. In these cases, third-party option board designers are either forced to purchase a license to use the source code for the CPU PROM or to create option boards that emulate a familiar board on the host computer. Upgrades of the original CPU PROM from the host company reduce the attractiveness of the licensing option, while software compatibility problems and the inability to improve or add to a design often plague the emulating option.
Interfacing an option board to a host computer is further complicated by the fact that the option board may play a role in the Power On sequence of the host computer. Thus, the CPU PROM generally needs to integrate the option board into the Power On sequence. When power is first applied to a computer system, the CPU PROM performs a sequence of operations known as Power On Self Test (POST) which initializes and verifies the integrity of essential hardware components necessary for the computer to operate correctly. During a normal POST sequence, the CPU resets and initializes the registers, probes the computer system to determine the type of peripheral devices installed, reports hardware failures, installs software drivers necessary to interact with the peripheral devices, and finally loads the primary operating system software (i.e. boots the system if no serious hardware failure is diagnosed). For the remaining portion of the description below, Power On sequence will be used interchangeably with POST.
In general, the CPU PROM does not recognize peripheral devices unless they are previously available and known by the designer of the CPU PROM and are thus properly identified by the CPU PROM. Software drivers resident in the CPU PROM control these peripheral devices and allow the host computer and its users to access and exploit the functionality of the peripheral devices. Many host computers also allow operating system software to access these CPU PROM based drivers via a Vector Table (ROMVEC Table) which is maintained by the CPU PROM. The ROMVEC Table establishes software pointers to various driver routines in the CPU PROM which can then be accessed and used by the operating system software. Thus, much of the low level code and the responsibility for interfacing correctly with the peripheral devices are left in the CPU PROM and shared by all other booted software-- simplifying the task of writing software for the operating system and application programs.